package com.firewolf.hibernate.component.dto;

import java.io.File;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class MainDriver {
	

	/**
	 * @Description: Configuration 
	 */
	public void userConfiguration() {

		// 1.直接创建对象，使用的是属性文件：hibernate.properties
		Configuration cfg = new Configuration();

		// 2.使用的是hibernate.cfg.xml文件
		Configuration cfg2 = new Configuration().configure();

		// 3.传递一个配置文件名或者文件，根据这个配置文件名来创建一个Configuration
		Configuration cfg3 = new Configuration().configure("file");
		Configuration cfg32 = new Configuration().configure(new File("file"));

	}

	/**
	 * @Description: SessionFactory
	 */
	public void useSessionFactory() {
		Configuration cfg = new Configuration().configure();
		// 在hibernate4以前的版本中可以使用cfg.buildSessionFactory()来创建SessionFactory，现在已经被废弃了
		ServiceRegistry registry = new ServiceRegistryBuilder().applySettings(cfg.getProperties())
				.buildServiceRegistry();
		SessionFactory factory = cfg.buildSessionFactory(registry);
	}
	
	public void useSession(){
		Configuration cfg = new Configuration().configure();
		// 在hibernate4以前的版本中可以使用cfg.buildSessionFactory()来创建SessionFactory，现在已经被废弃了
		ServiceRegistry registry = new ServiceRegistryBuilder().applySettings(cfg.getProperties())
				.buildServiceRegistry();
		SessionFactory factory = cfg.buildSessionFactory(registry);
		
		Session s = factory.openSession();
		
		//使用下面的方法创建的Session
		//①.会绑定到当前线程，
		//②.会在事务回滚或者提交的时候自动关闭，
		Session currentSession = factory.getCurrentSession();
	}
}

